const path = require("path");
const fs = require("fs");
// 用于写入数据到文件。如果文件不存在，会创建一个新文件；如果文件已存在，则会覆盖原有内容。
// fs.writeFile(path.join(__dirname, "./files", "1.txt"), "hello world", (err) => {
//   if (err) {
//     return console.log("写入失败");
//   }
//   console.log("写入成功");
// });

// 概述：fs.write 是一个底层的写入方法，通常用于对已经打开的文件描述符（file descriptor, 简写 fd）进行写操作。它提供了更细粒度的控制，比如你可以选择写入文件的某个特定位置。
fs.open(path.join(__dirname, "./files", "1.txt"), "a", (err, fd) => {
  if (err) {
    return console.error(err);
  }
  const buffer = Buffer.from("45454545");
  // 使用 fs.write 写入文件
  fs.write(fd, buffer, 0, buffer.length, null, (err, bytesWritten, buffer) => {
    if (err) throw err;
    console.log(`${bytesWritten}---${buffer} bytes written.`);
    // 关闭文件
    fs.close(fd, (err) => {
      if (err) throw err;
    });
  });
});

// 概述：fs.write 是一个底层的写入方法，通常用于对已经打开的文件描述符（file descriptor, 简写 fd）进行写操作。它提供了更细粒度的控制，比如你可以选择写入文件的某个特定位置。
// 操作模式：在使用 fs.write 之前，你必须手动使用 fs.open 打开文件获取文件描述符，写入后也需要手动关闭文件。
// 适合场景：如果你需要对文件进行部分写入，或需要控制文件的打开、关闭、写入位置等细节，可以使用 fs.write。

// fs.write(fd, buffer, offset, length, position, callback);
// fd：通过 fs.open 获取的文件描述符。
// buffer：要写入的数据，可以是 Buffer 类型的数据。
// offset：从 buffer 中读取数据的起始位置。
// length：要写入的数据长度。
// position：文件中的位置，从哪里开始写入（可为 null，表示从当前文件指针位置写入）。
// callback：写入完成后的回调函数，接受 err、bytesWritten 和 buffer 参数。
